define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {

  var Controller = {
    index: function () {
      // 初始化表格参数配置
      Table.api.init({
        extend: {
          // index_url: 'product/category/index' + location.search,
          index_url: 'product/category/index',
          add_url: 'product/category/add',
          edit_url: 'product/category/edit',
          del_url: 'product/category/del',
          multi_url: 'product/category/multi',
          // import_url: 'product/category/import',
          table: 'product_category',
        }
      });

      var table = $("#table");
      //在普通搜索渲染后
      //在普通搜索提交搜索前
      table.on('common-search.bs.table', function (event, table, query) {
        //这里可以获取到普通搜索表单中字段的查询条件
        console.log(query);
      });

      //在普通搜索渲染后
      // table.on('post-common-search.bs.table', function (event, table) {
      //   var form = $("form", table.$commonsearch);
      //   // $("input[name='title']", form).addClass("selectpage").data("source", "auth/adminlog/selectpage").data("primaryKey", "title").data("field", "title").data("orderBy", "id desc");
      //   // $("input[name='username']", form).addClass("selectpage").data("source", "auth/admin/index").data("primaryKey", "username").data("field", "username").data("orderBy", "id desc");
      //   Form.events.cxselect(form);
      //   Form.events.selectpage(form);
      // });
      // table.on('post-common-search.bs.table', function (event, table) {
      //   var form = $("form", table.$commonsearch);
      //   $("input[name='type']", form).addClass("selectpage").data("source", "common/moduleType")
      //     .data("primaryKey", "id").data("field", "type");
      //   Form.events.selectpage(form);
      // });


      //在表格内容渲染完成后回调的事件
      // table.on('post-body.bs.table', function (e, settings, json, xhr) {
      //   console.log(e, settings, json, xhr);
      // });

      //当表格数据加载完成时
      table.on('load-success.bs.table', function (e, data) {
        //这里可以获取从服务端获取的JSON数据
        console.log(data);
        //这里我们手动设置底部的值
        // $("#money").text(data.extend.money);
        // $("#price").text(data.extend.price);
      });

      // 初始化表格
      table.bootstrapTable({
        url: $.fn.bootstrapTable.defaults.extend.index_url,
        pk: 'id',
        sortName: 'id',
        columns: [
          [
            {checkbox: true},
            {field: 'id', title: __('Id')},
            // {field: 'pid', title: __('Pid')},
            {
              field: 'name', title: '名称'
            },
            {
              field: 'type', title: '类型',formatter:function (value,item,index) {
                if(value ===1){
                  return '环境';
                }else if(value ===2){
                  return '产品';
                }else {
                  return '未知';
                }
              },searchable:false
            },
            {
              field: 'cate_img',
              title: '图片',
              operate: false,
              events: Table.api.events.image,
              formatter: Table.api.formatter.image
            },
            {
              field: 'operate',
              title: __('Operate'),
              table: table,
              events: Table.api.events.operate,
              formatter: Table.api.formatter.operate
            }
          ]
        ],
        //更多配置参数可参考：https://doc.fastadmin.net/doc/190.html
        //亦可以参考require-table.js中defaults的配置
        //快捷搜索,这里可在控制器定义快捷搜索的字段
        search: true,
        //启用普通表单搜索
        commonSearch: true,
        //显示导出按钮
        // showExport: true,
        //启用跨页选择
        maintainSelected: true,
        //启用固定列
        fixedColumns: true,
        //固定左侧列数
        fixedNumber: 3,
        //固定右侧列数
        fixedRightNumber: 1,
        //导出类型
        exportDataType: "all", //共有basic, all, selected三种值 basic当前页 all全部 selected仅选中
        //导出下拉列表选项
        exportTypes: ['json', 'xml', 'csv', 'txt', 'doc', 'excel'],
        //可以控制是否默认显示搜索单表,false则隐藏,默认为false
        searchFormVisible: true,
        queryParams: function (params) {
          //这里可以追加搜索条件
          var filter = JSON.parse(params.filter);
          var op = JSON.parse(params.op);
          //这里可以动态赋值，比如从URL中获取admin_id的值，filter.type=Fast.api.query('type');
          filter.type = 1;
          op.type = "=";
          params.filter = JSON.stringify(filter);
          params.op = JSON.stringify(op);
          // console.log(filter,op);
          return params;
        },
      });

      // 为表格绑定事件
      Table.api.bindevent(table);
      //自定义Tab筛选条件
      $('.panel-heading .nav-custom-condition a[data-toggle="tab"]', table.closest(".panel-intro")).on('shown.bs.tab', function (e) {
        var value = $(this).data("value");
        var options = table.bootstrapTable('getOptions');
        var queryParams = options.queryParams;
        options.pageNumber = 1;
        options.queryParams = function (params) {
          //这一行必须要存在,否则在点击下一页时会丢失搜索栏数据
          params = queryParams(params);
          //如果希望追加搜索条件,可使用
          var filter = params.filter ? JSON.parse(params.filter) : {};
          var op = params.op ? JSON.parse(params.op) : {};
          if (value) {
            //这里可以自定义多个筛选条件
            filter.type = value;
            op.type = '=';
          } else {
            //选全部时要移除相应的条件
            delete filter.type;
            delete op.type;
          }
          params.filter = JSON.stringify(filter);
          params.op = JSON.stringify(op);

          //如果希望忽略搜索栏搜索条件,可使用
          //params.filter = JSON.stringify(value?{admin_id: value}:{});
          //params.op = JSON.stringify(value?{admin_id: '='}:{});
          return params;
        };

        table.trigger("uncheckbox");
        table.bootstrapTable('refresh', {pageNumber: 1});
        return false;
      });


    },
    add: function () {
      Controller.api.bindevent();
    },
    edit: function () {
      Controller.api.bindevent();
    },
    api: {
      bindevent: function () {
        Form.api.bindevent($("form[role=form]"));
      }
    }
  };
  return Controller;
});

